package com.project.service.impl;

import com.project.bean.ColumBean;
import com.project.bean.ColumnBean2;
import com.project.mapper.IColumMapper;
import com.project.service.IColumService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;

/**
 * 月销售统计
 */
@Service
@Transactional
public class ColumServiceImpl implements IColumService {
    @Autowired
    private IColumMapper columMapper;
    @Override
    public List<ColumnBean2> findClassesSaleByYear(String year) {
        //数据库查询的数据
        List<ColumBean> list1=columMapper.findClassesSaleByYear(year);
        //用来封装数据的集合
        List<ColumnBean2> list2=new ArrayList<>();
        //封装数据对象
        ColumnBean2 c=null;
        //集合1中的数据放入集合2
        for (int i=0;i< list1.size();i++){
            boolean f=true;
            for (int j=0;j<list2.size();j++){
                //通过类名来判断,集合2中是否有该数据
                if (list2.get(j).getName().equals(list1.get(i).getName())){//有相同产品类别的数据
                    f=false;
                    c=list2.get(j);
                }
            }
            if(f){
                ColumnBean2 column2=new ColumnBean2();
                column2.setName(list1.get(i).getName());

                List<Integer> v=new ArrayList<>();
                v.add(list1.get(i).getValue());
                column2.setValue(v);
                List<Integer> m=new ArrayList<>();
                m.add(list1.get(i).getMonth());
                column2.setMonth(m);
                list2.add(column2);
            }else {
                c.getValue().add(list1.get(i).getValue());
                c.getMonth().add(list1.get(i).getMonth());
            }
        }
        list2.forEach(i->{
            //将数据补充为1-12个月的销量，如果有销量就填入查到的销量，如果没有销量就为0
            List<Integer> dd=new ArrayList<>();
            List<Integer> data=i.getValue();
            int d2=0;//记录内部循环开始的地方
            for (int d=0;d<i.getMonth().size();d++){

                for (int d1=d2;d1<i.getMonth().get(d)-1;d1++){
                        dd.add(0);
                }
                d2=i.getMonth().get(d);//把下一次循环开始的位置记录下来
                dd.add(data.get(d));
            }
            i.setValue(dd);
        });
//        list2.forEach(i->{
//            //将数据补充为1-12个月的销量，如果有销量就填入查到的销量，如果没有销量就为0
//            List<Integer> dd=new ArrayList<>();
//            List<Integer> data=i.getVaule();
//            for (int j=1;j<=12;j++){//12个月
//                boolean f=true;//判断这月有没有销量，true没有销量
//                int index=0;//记录有销量的月份下标
//                for (int g=0;g<i.getMonth().size();g++){//遍历月份
//                    if(j==i.getMonth().get(g)){//如果月份相等
//                        f=false;//有销量
//                        index=g;
//                        break;
//                    }
//                }
//                if(f){
//                    dd.add(0);//没有销量
//                }else {
//                    dd.add(data.get(index));
//                }
//
//            }
//            i.setVaule(dd);
//
//        });

        return list2;
    }
}
